// 给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那 两个 整数，并返回他们的数组下标。

// 你可以假设每种输入只会对应一个答案。但是，数组中同一个元素不能使用两遍。


// 示例:

// 给定 nums = [2, 7, 11, 15], target = 9

// 因为 nums[0] + nums[1] = 2 + 7 = 9
// 所以返回 [0, 1]




var twoSum = function (nums, target) {
    // 拷贝数组
    let tempNums = [];
    for (let i = 0; i <= nums.length - 1; i++) {
        tempNums[i] = nums[i]
    };
    // 排序
    nums.sort((a, b) => a - b);
    // 初始化左右指针，和总和变量
    let
        left = 0,
        right = nums.length - 1,
        sum;
    // 移动
    while (left < right) {
        sum = nums[left] + nums[right];
        if (sum === target) {
            // last和非last的indexOf防止寻找到一个同一个值
            let index1 = tempNums.indexOf(nums[left]);
            let index2 = tempNums.lastIndexOf(nums[right]);
            return [index1,index2];
        }
        // 实时总和大，移动右指针
        else if (sum > target) {
            right--;
        }
        // 实时总和小，移动左指针
        else if (sum < target) {
            left++;
        }
    }
    // 搜索不到
    return [-1, -1];
};
console.log(twoSum([3, 2, 4], 6))